/**
 */
package fUML.Semantics.Classes.Kernel;

import fUML.Semantics.CommonBehaviors.BasicBehaviors.Execution;

import fUML.Semantics.Loci.LociL1.SemanticStrategy;

import fUML.Syntax.Classes.Kernel.Operation;

import fUML.Syntax.CommonBehaviors.BasicBehaviors.Behavior;

/**
 * <!-- begin-user-doc -->
 * A representation of the model object '<em><b>Dispatch Strategy</b></em>'.
 * <!-- end-user-doc -->
 *
 * <!-- begin-model-doc -->
 * A dispatch strategy is a semantic strategy for the polymorphic dispatching of an
 *                 operation to an execution of a method for that operation.
 * <!-- end-model-doc -->
 *
 *
 * @see fUML.Semantics.Classes.Kernel.KernelPackage#getDispatchStrategy()
 * @model abstract="true"
 * @generated
 */
public interface DispatchStrategy extends SemanticStrategy {
	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @model required="true" ordered="false" objectRequired="true" objectOrdered="false" operationRequired="true" operationOrdered="false"
	 * @generated
	 */
	Execution dispatch(fUML.Semantics.Classes.Kernel.Object object, Operation operation);

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * <!-- begin-model-doc -->
	 * // Get the method that corresponds to the given operation for the given
	 *                   object.
	 * <!-- end-model-doc -->
	 * @model required="true" ordered="false" objectRequired="true" objectOrdered="false" operationRequired="true" operationOrdered="false"
	 * @generated
	 */
	Behavior getMethod(fUML.Semantics.Classes.Kernel.Object object, Operation operation);

} // DispatchStrategy
